package Methodes;

import ilog.concert.IloException;
import DataIO.BinaireHydraulique;
import DataIO.BinaireThermique;
import DataIO.Data;
import DataIO.SolutionRecuit;
import Methodes.Solution;

/**
 * Classe abstraite héritée par toutes les méthodes employées pour résoudre le problème
 */
public abstract class Methode {
	
	/** Les données extraites des fichiers xls. */
	protected Data data;
	
	/** La solution trouvée par le recuit. */
	protected SolutionRecuit meilleureSolution;
	
	/** Les données binnaires thermiques. */
	protected BinaireThermique binaireTherm;
	
	/** Les données binaires hydraulique. */
	protected BinaireHydraulique binaireHydrau;
	
	/** La solution trouvée par les méthodes. */
	protected Solution solution;
	
	/**
	 * Constructeur par défaut
	 */
	public Methode(){}
	
	/**
	 * Constructeur permettant de récupérer les données
	 * @param d données xls ou données du cvx
	 */
	public Methode(Data d){
		data = d;
	}
	
	/**
	 * Methode utilisée pour lancer chaque méthode de résolution
	 * @throws IloException
	 */
	public abstract void solve() throws IloException;
	
	/**
	 * Solution trouvée qui sera affiché dans la vue
	 * @return la solution instanciée dans chaque méthode de résolution
	 */
	public Solution getSolution(){
		return solution;
	}
	

}
